package com.manage.modules.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.manage.common.core.domain.TreeSelect;
import com.manage.common.core.domain.entity.SysDept;
import com.manage.modules.domain.TBaseArea;
import com.manage.modules.domain.TreeSelectModel;
import org.apache.poi.ss.formula.functions.T;

import java.util.List;

/**
 * 区域信息Service接口
 *
 * @author xu
 * 2021/8/11 15:01
 */
public interface ITBaseAreaService extends IService<TBaseArea> {

    /**
     * 构建前端所需要树结构
     *
     * @param areas 区域列表
     * @return 树结构列表
     */
    public List<TBaseArea> buildAreaTree(List<TBaseArea> areas);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param areas 区域列表
     * @return 下拉树结构列表
     */
    List<TreeSelectModel> buildAreaTreeSelect(List<TBaseArea> areas);

    /**
     * 根据区域ID查询信息
     *
     * @param areaId 区域ID
     * @return 区域信息
     */
    public TBaseArea selectAreaById(Long areaId);

    /**
     * 是否存在区域子节点
     *
     * @param areaId 区域ID
     * @return 结果
     */
    public boolean hasChildByAreaId(Long areaId);

    /**
     * 删除区域管理信息
     *
     * @param areaId 区域ID
     * @return 结果
     */
    public int deleteAreaById(Long areaId);

    /**
     * 查询区域信息管理数据
     *
     * @param baseArea
     * @return
     */
    List<TBaseArea> selectAreaList(TBaseArea baseArea);

    /**
     * 校验区域名称是否唯一
     *
     * @param baseArea 区域信息
     * @return 结果
     */
    String checkAreaNameUnique(TBaseArea baseArea);

    /**
     * 新增保存区域信息
     *
     * @param baseArea 区域信息
     * @return 结果
     */
    int insertArea(TBaseArea baseArea);

    /**
     * 根据ID查询所有子区域（正常状态）
     *
     * @param areaId 区域ID
     * @return 子区域数
     */
    int selectNormalChildrenAreaById(Long areaId);

    /**
     * 修改保存区域信息
     *
     * @param baseArea 区域信息
     * @return 结果
     */
    public int updateArea(TBaseArea baseArea);
}
